<script>
  /*
  描述（用reduce）
    计算给定数组 arr 中所有元素的总和
  输入描述：
    数组中的元素均为 Number 类型

  示例
    sum([ 1, 2, 3, 4 ]) // 10
  */
  function sum(arr) {
    return arr.reduce(function(a, b) { return a+b}, 0)
  }
</script>

<script>
  /*
  描述（用filter）
    移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr，结果返回新的数组
    const a = [1, 2, 3, 4, 2]
    remove(a, 2)
    // [1, 3, 4]
    a
    // [1, 2, 3, 4, 2]
  */

  function remove(arr, item) {
    return arr.filter(n => n !== item)
  }
</script>

<script>
  /*
  描述
    移除数组 arr 中的所有值与 item 相等的元素，
    直接在给定的 arr 数组上进行操作，并将结果返回

  示例
  输入：
  const a2 = [1, 2, 2, 3, 4, 2, 2]
  removeWithoutCopy(a2, 2) // [1, 3, 4]
  a2 // [1, 3, 4]
  */

  function removeWithoutCopy(arr, item) {
    // for(let i=0; i<arr.length; i++) {
    //   if (item === arr[i]){
    //     arr.splice(i, 1)
    //     i--
    //   }
    // }
    // return arr
    for(let i=arr.length - 1; i>=0; i--) {
      if(item === arr[i]) {
        arr.splice(i, 1)
      }
    }
  }
  const a2 = [1, 2, 2, 3, 4, 2, 2]
  removeWithoutCopy(a2, 2)
</script>

<script>
/*

写一个字符串加密 encode 和解密 decode 方法
加密方法的字符串是由纯英文小写单词组成，将其中的a e i o u分别替换成 1 2 3 4 5
比如 encode("hello") 会返回 "h2ll4"

解密时将加密字符串还原为正常的英文
比如 decode("h3 th2r2") 会返回 "hi there"
*/


function encode(string) {
  // let a = 'aeiou'
  // let b = '12345'
  // for(let i=0; i<a.length; i++) {
  //   string = string.replaceAll(a[i], b[i])
  // }
  // return string

  return string.replace(
    /[aeiou]/g,
    char => '_aeiou'.indexOf(char)
  )
}

console.log(encode('hello world'))

function decode(string) {

}

console.log(decode('h2ll4'))



</script>